DigiOffice Gateway Web Services

<back to all web services

ProcessProjectRequestMessage

Requires Authentication
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';

class Environment implements IConvertible
{
    String? Title;
    String? Code;

    Environment({this.Title,this.Code});
    Environment.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Title = json['Title'];
        Code = json['Code'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Title': Title,
        'Code': Code
    };

    getTypeName() => "Environment";
    TypeContext? context = _ctx;
}

class Party implements IConvertible
{
    String? Title;
    String? Code;
    String? Version;
    Environment? Environment;

    Party({this.Title,this.Code,this.Version,this.Environment});
    Party.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Title = json['Title'];
        Code = json['Code'];
        Version = json['Version'];
        Environment = JsonConverters.fromJson(json['Environment'],'Environment',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Title': Title,
        'Code': Code,
        'Version': Version,
        'Environment': JsonConverters.toJson(Environment,'Environment',context!)
    };

    getTypeName() => "Party";
    TypeContext? context = _ctx;
}

class Header implements IConvertible
{
    String? MessageID;
    DateTime? Timestamp;
    Party? Sender;
    Party? Recipient;
    dynamic? RequestMessageID;

    Header({this.MessageID,this.Timestamp,this.Sender,this.Recipient,this.RequestMessageID});
    Header.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        MessageID = json['MessageID'];
        Timestamp = JsonConverters.fromJson(json['Timestamp'],'DateTime',context!);
        Sender = JsonConverters.fromJson(json['Sender'],'Party',context!);
        Recipient = JsonConverters.fromJson(json['Recipient'],'Party',context!);
        RequestMessageID = JsonConverters.fromJson(json['RequestMessageID'],'dynamic',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'MessageID': MessageID,
        'Timestamp': JsonConverters.toJson(Timestamp,'DateTime',context!),
        'Sender': JsonConverters.toJson(Sender,'Party',context!),
        'Recipient': JsonConverters.toJson(Recipient,'Party',context!),
        'RequestMessageID': JsonConverters.toJson(RequestMessageID,'dynamic',context!)
    };

    getTypeName() => "Header";
    TypeContext? context = _ctx;
}

class Reference implements IConvertible
{
    String? GlobalID;
    String? Title;

    Reference({this.GlobalID,this.Title});
    Reference.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        GlobalID = json['GlobalID'];
        Title = json['Title'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'GlobalID': GlobalID,
        'Title': Title
    };

    getTypeName() => "Reference";
    TypeContext? context = _ctx;
}

class Address implements IConvertible
{
    String? AddressLine1;
    String? AddressLine2;
    String? HouseNumber;
    String? HouseNumberSuffix;
    String? PostalCode;
    String? City;
    Reference? Country;

    Address({this.AddressLine1,this.AddressLine2,this.HouseNumber,this.HouseNumberSuffix,this.PostalCode,this.City,this.Country});
    Address.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        AddressLine1 = json['AddressLine1'];
        AddressLine2 = json['AddressLine2'];
        HouseNumber = json['HouseNumber'];
        HouseNumberSuffix = json['HouseNumberSuffix'];
        PostalCode = json['PostalCode'];
        City = json['City'];
        Country = JsonConverters.fromJson(json['Country'],'Reference',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'AddressLine1': AddressLine1,
        'AddressLine2': AddressLine2,
        'HouseNumber': HouseNumber,
        'HouseNumberSuffix': HouseNumberSuffix,
        'PostalCode': PostalCode,
        'City': City,
        'Country': JsonConverters.toJson(Country,'Reference',context!)
    };

    getTypeName() => "Address";
    TypeContext? context = _ctx;
}

class MailingAddress implements IConvertible
{
    String? POBox;
    String? PostalCode;
    String? City;
    Reference? Country;

    MailingAddress({this.POBox,this.PostalCode,this.City,this.Country});
    MailingAddress.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        POBox = json['POBox'];
        PostalCode = json['PostalCode'];
        City = json['City'];
        Country = JsonConverters.fromJson(json['Country'],'Reference',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'POBox': POBox,
        'PostalCode': PostalCode,
        'City': City,
        'Country': JsonConverters.toJson(Country,'Reference',context!)
    };

    getTypeName() => "MailingAddress";
    TypeContext? context = _ctx;
}

class Project implements IConvertible
{
    String? GlobalID;
    DateTime? CreationDate;
    String? CreatedBy;
    DateTime? ModifiedDate;
    String? ModifiedBy;
    String? Code;
    String? Name;
    String? Description1;
    String? Description2;
    Address? Address;
    MailingAddress? MailingAddress;
    Reference? ProjectCategoryReference;
    Reference? ProjectTypeReference;
    Reference? ProjectStatusReference;
    DateTime? StartDate;
    DateTime? EndDate;
    DateTime? CompletionDate;
    bool? Inactive;
    String? Website;
    bool? IsTemplateProject;
    List<CustomField>? CustomFields;

    Project({this.GlobalID,this.CreationDate,this.CreatedBy,this.ModifiedDate,this.ModifiedBy,this.Code,this.Name,this.Description1,this.Description2,this.Address,this.MailingAddress,this.ProjectCategoryReference,this.ProjectTypeReference,this.ProjectStatusReference,this.StartDate,this.EndDate,this.CompletionDate,this.Inactive,this.Website,this.IsTemplateProject,this.CustomFields});
    Project.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        GlobalID = json['GlobalID'];
        CreationDate = JsonConverters.fromJson(json['CreationDate'],'DateTime',context!);
        CreatedBy = json['CreatedBy'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        ModifiedBy = json['ModifiedBy'];
        Code = json['Code'];
        Name = json['Name'];
        Description1 = json['Description1'];
        Description2 = json['Description2'];
        Address = JsonConverters.fromJson(json['Address'],'Address',context!);
        MailingAddress = JsonConverters.fromJson(json['MailingAddress'],'MailingAddress',context!);
        ProjectCategoryReference = JsonConverters.fromJson(json['ProjectCategoryReference'],'Reference',context!);
        ProjectTypeReference = JsonConverters.fromJson(json['ProjectTypeReference'],'Reference',context!);
        ProjectStatusReference = JsonConverters.fromJson(json['ProjectStatusReference'],'Reference',context!);
        StartDate = JsonConverters.fromJson(json['StartDate'],'DateTime',context!);
        EndDate = JsonConverters.fromJson(json['EndDate'],'DateTime',context!);
        CompletionDate = JsonConverters.fromJson(json['CompletionDate'],'DateTime',context!);
        Inactive = json['Inactive'];
        Website = json['Website'];
        IsTemplateProject = json['IsTemplateProject'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'GlobalID': GlobalID,
        'CreationDate': JsonConverters.toJson(CreationDate,'DateTime',context!),
        'CreatedBy': CreatedBy,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!),
        'ModifiedBy': ModifiedBy,
        'Code': Code,
        'Name': Name,
        'Description1': Description1,
        'Description2': Description2,
        'Address': JsonConverters.toJson(Address,'Address',context!),
        'MailingAddress': JsonConverters.toJson(MailingAddress,'MailingAddress',context!),
        'ProjectCategoryReference': JsonConverters.toJson(ProjectCategoryReference,'Reference',context!),
        'ProjectTypeReference': JsonConverters.toJson(ProjectTypeReference,'Reference',context!),
        'ProjectStatusReference': JsonConverters.toJson(ProjectStatusReference,'Reference',context!),
        'StartDate': JsonConverters.toJson(StartDate,'DateTime',context!),
        'EndDate': JsonConverters.toJson(EndDate,'DateTime',context!),
        'CompletionDate': JsonConverters.toJson(CompletionDate,'DateTime',context!),
        'Inactive': Inactive,
        'Website': Website,
        'IsTemplateProject': IsTemplateProject,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!)
    };

    getTypeName() => "Project";
    TypeContext? context = _ctx;
}

class ProjectResponseMessage implements IConvertible
{
    Header? Header;
    Reference? ProjectReference;
    Project? Project;
    List<HousingType>? HousingTypes;
    List<ConstructionBlock>? ConstructionBlocks;
    List<ConstructionNumber>? ConstructionNumbers;
    List<Document>? Documents;
    List<PurchaseContract>? PurchaseContracts;

    ProjectResponseMessage({this.Header,this.ProjectReference,this.Project,this.HousingTypes,this.ConstructionBlocks,this.ConstructionNumbers,this.Documents,this.PurchaseContracts});
    ProjectResponseMessage.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Header = JsonConverters.fromJson(json['Header'],'Header',context!);
        ProjectReference = JsonConverters.fromJson(json['ProjectReference'],'Reference',context!);
        Project = JsonConverters.fromJson(json['Project'],'Project',context!);
        HousingTypes = JsonConverters.fromJson(json['HousingTypes'],'List<HousingType>',context!);
        ConstructionBlocks = JsonConverters.fromJson(json['ConstructionBlocks'],'List<ConstructionBlock>',context!);
        ConstructionNumbers = JsonConverters.fromJson(json['ConstructionNumbers'],'List<ConstructionNumber>',context!);
        Documents = JsonConverters.fromJson(json['Documents'],'List<Document>',context!);
        PurchaseContracts = JsonConverters.fromJson(json['PurchaseContracts'],'List<PurchaseContract>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Header': JsonConverters.toJson(Header,'Header',context!),
        'ProjectReference': JsonConverters.toJson(ProjectReference,'Reference',context!),
        'Project': JsonConverters.toJson(Project,'Project',context!),
        'HousingTypes': JsonConverters.toJson(HousingTypes,'List<HousingType>',context!),
        'ConstructionBlocks': JsonConverters.toJson(ConstructionBlocks,'List<ConstructionBlock>',context!),
        'ConstructionNumbers': JsonConverters.toJson(ConstructionNumbers,'List<ConstructionNumber>',context!),
        'Documents': JsonConverters.toJson(Documents,'List<Document>',context!),
        'PurchaseContracts': JsonConverters.toJson(PurchaseContracts,'List<PurchaseContract>',context!)
    };

    getTypeName() => "ProjectResponseMessage";
    TypeContext? context = _ctx;
}

class ProjectRequestMessage implements IConvertible
{
    Header? Header;
    Reference? ProjectReference;
    bool? IncludeHousingTypes;
    bool? IncludeConstructionBlocks;
    bool? IncludeConstructionNumbers;
    bool? IncludeDocuments;
    bool? IncludePurchaseContracts;

    ProjectRequestMessage({this.Header,this.ProjectReference,this.IncludeHousingTypes,this.IncludeConstructionBlocks,this.IncludeConstructionNumbers,this.IncludeDocuments,this.IncludePurchaseContracts});
    ProjectRequestMessage.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Header = JsonConverters.fromJson(json['Header'],'Header',context!);
        ProjectReference = JsonConverters.fromJson(json['ProjectReference'],'Reference',context!);
        IncludeHousingTypes = json['IncludeHousingTypes'];
        IncludeConstructionBlocks = json['IncludeConstructionBlocks'];
        IncludeConstructionNumbers = json['IncludeConstructionNumbers'];
        IncludeDocuments = json['IncludeDocuments'];
        IncludePurchaseContracts = json['IncludePurchaseContracts'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Header': JsonConverters.toJson(Header,'Header',context!),
        'ProjectReference': JsonConverters.toJson(ProjectReference,'Reference',context!),
        'IncludeHousingTypes': IncludeHousingTypes,
        'IncludeConstructionBlocks': IncludeConstructionBlocks,
        'IncludeConstructionNumbers': IncludeConstructionNumbers,
        'IncludeDocuments': IncludeDocuments,
        'IncludePurchaseContracts': IncludePurchaseContracts
    };

    getTypeName() => "ProjectRequestMessage";
    TypeContext? context = _ctx;
}

class ProcessProjectRequestMessage implements IConvertible
{
    String? InstanceId;
    ProjectRequestMessage? ProjectRequest;

    ProcessProjectRequestMessage({this.InstanceId,this.ProjectRequest});
    ProcessProjectRequestMessage.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        InstanceId = json['InstanceId'];
        ProjectRequest = JsonConverters.fromJson(json['ProjectRequest'],'ProjectRequestMessage',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'InstanceId': InstanceId,
        'ProjectRequest': JsonConverters.toJson(ProjectRequest,'ProjectRequestMessage',context!)
    };

    getTypeName() => "ProcessProjectRequestMessage";
    TypeContext? context = _ctx;
}

class CustomField implements IConvertible
{
    String? Name;
    String? Value;

    CustomField({this.Name,this.Value});
    CustomField.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        Name = json['Name'];
        Value = json['Value'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'Name': Name,
        'Value': Value
    };

    getTypeName() => "CustomField";
    TypeContext? context = _ctx;
}

class HousingType implements IConvertible
{
    String? GlobalID;
    Reference? ProjectReference;
    String? Code;
    String? Description;
    List<CustomField>? CustomFields;
    DateTime? CreationDate;
    String? CreatedBy;
    DateTime? ModifiedDate;
    String? ModifiedBy;

    HousingType({this.GlobalID,this.ProjectReference,this.Code,this.Description,this.CustomFields,this.CreationDate,this.CreatedBy,this.ModifiedDate,this.ModifiedBy});
    HousingType.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        GlobalID = json['GlobalID'];
        ProjectReference = JsonConverters.fromJson(json['ProjectReference'],'Reference',context!);
        Code = json['Code'];
        Description = json['Description'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        CreationDate = JsonConverters.fromJson(json['CreationDate'],'DateTime',context!);
        CreatedBy = json['CreatedBy'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        ModifiedBy = json['ModifiedBy'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'GlobalID': GlobalID,
        'ProjectReference': JsonConverters.toJson(ProjectReference,'Reference',context!),
        'Code': Code,
        'Description': Description,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!),
        'CreationDate': JsonConverters.toJson(CreationDate,'DateTime',context!),
        'CreatedBy': CreatedBy,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!),
        'ModifiedBy': ModifiedBy
    };

    getTypeName() => "HousingType";
    TypeContext? context = _ctx;
}

class ConstructionBlock implements IConvertible
{
    String? GlobalID;
    Reference? ProjectReference;
    String? Code;
    String? Description;
    List<CustomField>? CustomFields;
    DateTime? CreationDate;
    String? CreatedBy;
    DateTime? ModifiedDate;
    String? ModifiedBy;

    ConstructionBlock({this.GlobalID,this.ProjectReference,this.Code,this.Description,this.CustomFields,this.CreationDate,this.CreatedBy,this.ModifiedDate,this.ModifiedBy});
    ConstructionBlock.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        GlobalID = json['GlobalID'];
        ProjectReference = JsonConverters.fromJson(json['ProjectReference'],'Reference',context!);
        Code = json['Code'];
        Description = json['Description'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        CreationDate = JsonConverters.fromJson(json['CreationDate'],'DateTime',context!);
        CreatedBy = json['CreatedBy'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        ModifiedBy = json['ModifiedBy'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'GlobalID': GlobalID,
        'ProjectReference': JsonConverters.toJson(ProjectReference,'Reference',context!),
        'Code': Code,
        'Description': Description,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!),
        'CreationDate': JsonConverters.toJson(CreationDate,'DateTime',context!),
        'CreatedBy': CreatedBy,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!),
        'ModifiedBy': ModifiedBy
    };

    getTypeName() => "ConstructionBlock";
    TypeContext? context = _ctx;
}

class ConstructionNumber implements IConvertible
{
    String? GlobalID;
    Reference? ProjectReference;
    Reference? HousingTypeReference;
    Reference? ConstructionBlockReference;
    String? Code;
    String? Description;
    Address? Address;
    bool? RentalHouse;
    String? GuaranteeCertificateNumber;
    bool? Inactive;
    List<CustomField>? CustomFields;
    DateTime? CreationDate;
    String? CreatedBy;
    DateTime? ModifiedDate;
    String? ModifiedBy;
    DateTime? ViewingDate;
    bool? ViewingDateSpecified;
    DateTime? DeliveryDate;
    bool? DeliveryDateSpecified;

    ConstructionNumber({this.GlobalID,this.ProjectReference,this.HousingTypeReference,this.ConstructionBlockReference,this.Code,this.Description,this.Address,this.RentalHouse,this.GuaranteeCertificateNumber,this.Inactive,this.CustomFields,this.CreationDate,this.CreatedBy,this.ModifiedDate,this.ModifiedBy,this.ViewingDate,this.ViewingDateSpecified,this.DeliveryDate,this.DeliveryDateSpecified});
    ConstructionNumber.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        GlobalID = json['GlobalID'];
        ProjectReference = JsonConverters.fromJson(json['ProjectReference'],'Reference',context!);
        HousingTypeReference = JsonConverters.fromJson(json['HousingTypeReference'],'Reference',context!);
        ConstructionBlockReference = JsonConverters.fromJson(json['ConstructionBlockReference'],'Reference',context!);
        Code = json['Code'];
        Description = json['Description'];
        Address = JsonConverters.fromJson(json['Address'],'Address',context!);
        RentalHouse = json['RentalHouse'];
        GuaranteeCertificateNumber = json['GuaranteeCertificateNumber'];
        Inactive = json['Inactive'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        CreationDate = JsonConverters.fromJson(json['CreationDate'],'DateTime',context!);
        CreatedBy = json['CreatedBy'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        ModifiedBy = json['ModifiedBy'];
        ViewingDate = JsonConverters.fromJson(json['ViewingDate'],'DateTime',context!);
        ViewingDateSpecified = json['ViewingDateSpecified'];
        DeliveryDate = JsonConverters.fromJson(json['DeliveryDate'],'DateTime',context!);
        DeliveryDateSpecified = json['DeliveryDateSpecified'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'GlobalID': GlobalID,
        'ProjectReference': JsonConverters.toJson(ProjectReference,'Reference',context!),
        'HousingTypeReference': JsonConverters.toJson(HousingTypeReference,'Reference',context!),
        'ConstructionBlockReference': JsonConverters.toJson(ConstructionBlockReference,'Reference',context!),
        'Code': Code,
        'Description': Description,
        'Address': JsonConverters.toJson(Address,'Address',context!),
        'RentalHouse': RentalHouse,
        'GuaranteeCertificateNumber': GuaranteeCertificateNumber,
        'Inactive': Inactive,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!),
        'CreationDate': JsonConverters.toJson(CreationDate,'DateTime',context!),
        'CreatedBy': CreatedBy,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!),
        'ModifiedBy': ModifiedBy,
        'ViewingDate': JsonConverters.toJson(ViewingDate,'DateTime',context!),
        'ViewingDateSpecified': ViewingDateSpecified,
        'DeliveryDate': JsonConverters.toJson(DeliveryDate,'DateTime',context!),
        'DeliveryDateSpecified': DeliveryDateSpecified
    };

    getTypeName() => "ConstructionNumber";
    TypeContext? context = _ctx;
}

class Document implements ICustomProperties, IConvertible
{
    String? ID;
    String? RootDocumentID;
    String? RegistrationprofileID;
    String? Title;
    String? FullTitle;
    String? Number;
    String? Version;
    String? ExternalNumber;
    String? ExternalVersion;
    String? InternalNumber;
    String? InternalInvoiceNumber;
    int? PersonID;
    int? RelationID;
    String? RelationTitle;
    int? ProjectID;
    String? ProjectTitle;
    String? Extension;
    DateTime? Date;
    int? CommentsCount;
    bool? HasComments;
    bool? HasPreview;
    String? ExtraField;
    bool? IsFavorite;
    String? DocumentcategoryText;
    int? FileSize;
    DateTime? FileDate;
    String? Hash;
    String? HashType;
    String? FileUrl;
    String? StandardDocumentUrl;
    bool? IsCorporateIdentity;
    String? UserTitle;
    bool? IsFrozen;
    int? InternalCompanyID;
    String? DirectUrl;
    bool? AllowDigitalSigningOnlyOnPrimaryVersions;
    bool? IsPrimaryVersion;
    String? FileExtension;
    Map<String,dynamic?>? CustomProperties;

    Document({this.ID,this.RootDocumentID,this.RegistrationprofileID,this.Title,this.FullTitle,this.Number,this.Version,this.ExternalNumber,this.ExternalVersion,this.InternalNumber,this.InternalInvoiceNumber,this.PersonID,this.RelationID,this.RelationTitle,this.ProjectID,this.ProjectTitle,this.Extension,this.Date,this.CommentsCount,this.HasComments,this.HasPreview,this.ExtraField,this.IsFavorite,this.DocumentcategoryText,this.FileSize,this.FileDate,this.Hash,this.HashType,this.FileUrl,this.StandardDocumentUrl,this.IsCorporateIdentity,this.UserTitle,this.IsFrozen,this.InternalCompanyID,this.DirectUrl,this.AllowDigitalSigningOnlyOnPrimaryVersions,this.IsPrimaryVersion,this.FileExtension,this.CustomProperties});
    Document.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        ID = json['ID'];
        RootDocumentID = json['RootDocumentID'];
        RegistrationprofileID = json['RegistrationprofileID'];
        Title = json['Title'];
        FullTitle = json['FullTitle'];
        Number = json['Number'];
        Version = json['Version'];
        ExternalNumber = json['ExternalNumber'];
        ExternalVersion = json['ExternalVersion'];
        InternalNumber = json['InternalNumber'];
        InternalInvoiceNumber = json['InternalInvoiceNumber'];
        PersonID = json['PersonID'];
        RelationID = json['RelationID'];
        RelationTitle = json['RelationTitle'];
        ProjectID = json['ProjectID'];
        ProjectTitle = json['ProjectTitle'];
        Extension = json['Extension'];
        Date = JsonConverters.fromJson(json['Date'],'DateTime',context!);
        CommentsCount = json['CommentsCount'];
        HasComments = json['HasComments'];
        HasPreview = json['HasPreview'];
        ExtraField = json['ExtraField'];
        IsFavorite = json['IsFavorite'];
        DocumentcategoryText = json['DocumentcategoryText'];
        FileSize = json['FileSize'];
        FileDate = JsonConverters.fromJson(json['FileDate'],'DateTime',context!);
        Hash = json['Hash'];
        HashType = json['HashType'];
        FileUrl = json['FileUrl'];
        StandardDocumentUrl = json['StandardDocumentUrl'];
        IsCorporateIdentity = json['IsCorporateIdentity'];
        UserTitle = json['UserTitle'];
        IsFrozen = json['IsFrozen'];
        InternalCompanyID = json['InternalCompanyID'];
        DirectUrl = json['DirectUrl'];
        AllowDigitalSigningOnlyOnPrimaryVersions = json['AllowDigitalSigningOnlyOnPrimaryVersions'];
        IsPrimaryVersion = json['IsPrimaryVersion'];
        FileExtension = json['FileExtension'];
        CustomProperties = JsonConverters.fromJson(json['CustomProperties'],'Map<String,dynamic?>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'ID': ID,
        'RootDocumentID': RootDocumentID,
        'RegistrationprofileID': RegistrationprofileID,
        'Title': Title,
        'FullTitle': FullTitle,
        'Number': Number,
        'Version': Version,
        'ExternalNumber': ExternalNumber,
        'ExternalVersion': ExternalVersion,
        'InternalNumber': InternalNumber,
        'InternalInvoiceNumber': InternalInvoiceNumber,
        'PersonID': PersonID,
        'RelationID': RelationID,
        'RelationTitle': RelationTitle,
        'ProjectID': ProjectID,
        'ProjectTitle': ProjectTitle,
        'Extension': Extension,
        'Date': JsonConverters.toJson(Date,'DateTime',context!),
        'CommentsCount': CommentsCount,
        'HasComments': HasComments,
        'HasPreview': HasPreview,
        'ExtraField': ExtraField,
        'IsFavorite': IsFavorite,
        'DocumentcategoryText': DocumentcategoryText,
        'FileSize': FileSize,
        'FileDate': JsonConverters.toJson(FileDate,'DateTime',context!),
        'Hash': Hash,
        'HashType': HashType,
        'FileUrl': FileUrl,
        'StandardDocumentUrl': StandardDocumentUrl,
        'IsCorporateIdentity': IsCorporateIdentity,
        'UserTitle': UserTitle,
        'IsFrozen': IsFrozen,
        'InternalCompanyID': InternalCompanyID,
        'DirectUrl': DirectUrl,
        'AllowDigitalSigningOnlyOnPrimaryVersions': AllowDigitalSigningOnlyOnPrimaryVersions,
        'IsPrimaryVersion': IsPrimaryVersion,
        'FileExtension': FileExtension,
        'CustomProperties': JsonConverters.toJson(CustomProperties,'Map<String,dynamic?>',context!)
    };

    getTypeName() => "Document";
    TypeContext? context = _ctx;
}

class Relation implements IConvertible
{
    String? GlobalID;
    String? NameLine1;
    String? NameLine2;
    Address? Address;
    MailingAddress? MailingAddress;
    String? Telephone;
    String? Mobile;
    String? Email;
    String? IBAN;
    String? BankAccountNumber;
    String? Website;
    bool? Inactive;
    List<CustomField>? CustomFields;
    DateTime? CreationDate;
    String? CreatedBy;
    DateTime? ModifiedDate;
    String? ModifiedBy;

    Relation({this.GlobalID,this.NameLine1,this.NameLine2,this.Address,this.MailingAddress,this.Telephone,this.Mobile,this.Email,this.IBAN,this.BankAccountNumber,this.Website,this.Inactive,this.CustomFields,this.CreationDate,this.CreatedBy,this.ModifiedDate,this.ModifiedBy});
    Relation.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        GlobalID = json['GlobalID'];
        NameLine1 = json['NameLine1'];
        NameLine2 = json['NameLine2'];
        Address = JsonConverters.fromJson(json['Address'],'Address',context!);
        MailingAddress = JsonConverters.fromJson(json['MailingAddress'],'MailingAddress',context!);
        Telephone = json['Telephone'];
        Mobile = json['Mobile'];
        Email = json['Email'];
        IBAN = json['IBAN'];
        BankAccountNumber = json['BankAccountNumber'];
        Website = json['Website'];
        Inactive = json['Inactive'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        CreationDate = JsonConverters.fromJson(json['CreationDate'],'DateTime',context!);
        CreatedBy = json['CreatedBy'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        ModifiedBy = json['ModifiedBy'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'GlobalID': GlobalID,
        'NameLine1': NameLine1,
        'NameLine2': NameLine2,
        'Address': JsonConverters.toJson(Address,'Address',context!),
        'MailingAddress': JsonConverters.toJson(MailingAddress,'MailingAddress',context!),
        'Telephone': Telephone,
        'Mobile': Mobile,
        'Email': Email,
        'IBAN': IBAN,
        'BankAccountNumber': BankAccountNumber,
        'Website': Website,
        'Inactive': Inactive,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!),
        'CreationDate': JsonConverters.toJson(CreationDate,'DateTime',context!),
        'CreatedBy': CreatedBy,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!),
        'ModifiedBy': ModifiedBy
    };

    getTypeName() => "Relation";
    TypeContext? context = _ctx;
}

class PurchaseContract implements IConvertible
{
    String? GlobalID;
    String? Code;
    String? Description;
    Reference? ProjectReference;
    String? ProductCode;
    Relation? Relation;
    bool? Inactive;
    List<CustomField>? CustomFields;
    DateTime? CreationDate;
    String? CreatedBy;
    DateTime? ModifiedDate;
    String? ModifiedBy;

    PurchaseContract({this.GlobalID,this.Code,this.Description,this.ProjectReference,this.ProductCode,this.Relation,this.Inactive,this.CustomFields,this.CreationDate,this.CreatedBy,this.ModifiedDate,this.ModifiedBy});
    PurchaseContract.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        GlobalID = json['GlobalID'];
        Code = json['Code'];
        Description = json['Description'];
        ProjectReference = JsonConverters.fromJson(json['ProjectReference'],'Reference',context!);
        ProductCode = json['ProductCode'];
        Relation = JsonConverters.fromJson(json['Relation'],'Relation',context!);
        Inactive = json['Inactive'];
        CustomFields = JsonConverters.fromJson(json['CustomFields'],'List<CustomField>',context!);
        CreationDate = JsonConverters.fromJson(json['CreationDate'],'DateTime',context!);
        CreatedBy = json['CreatedBy'];
        ModifiedDate = JsonConverters.fromJson(json['ModifiedDate'],'DateTime',context!);
        ModifiedBy = json['ModifiedBy'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'GlobalID': GlobalID,
        'Code': Code,
        'Description': Description,
        'ProjectReference': JsonConverters.toJson(ProjectReference,'Reference',context!),
        'ProductCode': ProductCode,
        'Relation': JsonConverters.toJson(Relation,'Relation',context!),
        'Inactive': Inactive,
        'CustomFields': JsonConverters.toJson(CustomFields,'List<CustomField>',context!),
        'CreationDate': JsonConverters.toJson(CreationDate,'DateTime',context!),
        'CreatedBy': CreatedBy,
        'ModifiedDate': JsonConverters.toJson(ModifiedDate,'DateTime',context!),
        'ModifiedBy': ModifiedBy
    };

    getTypeName() => "PurchaseContract";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'kpm_digiofficeapigateway.tbi.nl', types: <String, TypeInfo> {
    'Environment': TypeInfo(TypeOf.Class, create:() => Environment()),
    'Party': TypeInfo(TypeOf.Class, create:() => Party()),
    'Header': TypeInfo(TypeOf.Class, create:() => Header()),
    'Reference': TypeInfo(TypeOf.Class, create:() => Reference()),
    'Address': TypeInfo(TypeOf.Class, create:() => Address()),
    'MailingAddress': TypeInfo(TypeOf.Class, create:() => MailingAddress()),
    'Project': TypeInfo(TypeOf.Class, create:() => Project()),
    'List<CustomField>': TypeInfo(TypeOf.Class, create:() => <CustomField>[]),
    'CustomField': TypeInfo(TypeOf.Class, create:() => CustomField()),
    'ProjectResponseMessage': TypeInfo(TypeOf.Class, create:() => ProjectResponseMessage()),
    'List<HousingType>': TypeInfo(TypeOf.Class, create:() => <HousingType>[]),
    'HousingType': TypeInfo(TypeOf.Class, create:() => HousingType()),
    'List<ConstructionBlock>': TypeInfo(TypeOf.Class, create:() => <ConstructionBlock>[]),
    'ConstructionBlock': TypeInfo(TypeOf.Class, create:() => ConstructionBlock()),
    'List<ConstructionNumber>': TypeInfo(TypeOf.Class, create:() => <ConstructionNumber>[]),
    'ConstructionNumber': TypeInfo(TypeOf.Class, create:() => ConstructionNumber()),
    'List<Document>': TypeInfo(TypeOf.Class, create:() => <Document>[]),
    'Document': TypeInfo(TypeOf.Class, create:() => Document()),
    'List<PurchaseContract>': TypeInfo(TypeOf.Class, create:() => <PurchaseContract>[]),
    'PurchaseContract': TypeInfo(TypeOf.Class, create:() => PurchaseContract()),
    'ProjectRequestMessage': TypeInfo(TypeOf.Class, create:() => ProjectRequestMessage()),
    'ProcessProjectRequestMessage': TypeInfo(TypeOf.Class, create:() => ProcessProjectRequestMessage()),
    'Map<String,dynamic?>': TypeInfo(TypeOf.Class, create:() => Map<String,dynamic?>()),
    'Relation': TypeInfo(TypeOf.Class, create:() => Relation()),
});

Dart ProcessProjectRequestMessage DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /jsv/reply/ProcessProjectRequestMessage HTTP/1.1 
Host: kpm_digiofficeapigateway.tbi.nl 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	ProjectRequest: 
	{
		Header: 
		{
			MessageID: String,
			Timestamp: 0001-01-01,
			Sender: 
			{
				Title: String,
				Code: String,
				Version: String,
				Environment: 
				{
					Title: String,
					Code: String
				}
			},
			Recipient: 
			{
				Title: String,
				Code: String,
				Version: String,
				Environment: 
				{
					Title: String,
					Code: String
				}
			},
			RequestMessageID: {}
		},
		ProjectReference: 
		{
			GlobalID: String,
			Title: String
		},
		IncludeHousingTypes: False,
		IncludeConstructionBlocks: False,
		IncludeConstructionNumbers: False,
		IncludeDocuments: False,
		IncludePurchaseContracts: False
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Header: 
	{
		MessageID: String,
		Timestamp: 0001-01-01,
		Sender: 
		{
			Title: String,
			Code: String,
			Version: String,
			Environment: 
			{
				Title: String,
				Code: String
			}
		},
		Recipient: 
		{
			Title: String,
			Code: String,
			Version: String,
			Environment: 
			{
				Title: String,
				Code: String
			}
		},
		RequestMessageID: {}
	},
	ProjectReference: 
	{
		GlobalID: String,
		Title: String
	},
	Project: 
	{
		GlobalID: String,
		CreationDate: 0001-01-01,
		CreatedBy: String,
		ModifiedDate: 0001-01-01,
		ModifiedBy: String,
		Code: String,
		Name: String,
		Description1: String,
		Description2: String,
		Address: 
		{
			AddressLine1: String,
			AddressLine2: String,
			HouseNumber: String,
			HouseNumberSuffix: String,
			PostalCode: String,
			City: String,
			Country: 
			{
				GlobalID: String,
				Title: String
			}
		},
		MailingAddress: 
		{
			POBox: String,
			PostalCode: String,
			City: String,
			Country: 
			{
				GlobalID: String,
				Title: String
			}
		},
		ProjectCategoryReference: 
		{
			GlobalID: String,
			Title: String
		},
		ProjectTypeReference: 
		{
			GlobalID: String,
			Title: String
		},
		ProjectStatusReference: 
		{
			GlobalID: String,
			Title: String
		},
		StartDate: 0001-01-01,
		EndDate: 0001-01-01,
		CompletionDate: 0001-01-01,
		Inactive: False,
		Website: String,
		IsTemplateProject: False,
		CustomFields: 
		[
			{
				Name: String,
				Value: String
			}
		]
	},
	HousingTypes: 
	[
		{
			GlobalID: String,
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			Code: String,
			Description: String,
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String
		}
	],
	ConstructionBlocks: 
	[
		{
			GlobalID: String,
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			Code: String,
			Description: String,
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String
		}
	],
	ConstructionNumbers: 
	[
		{
			GlobalID: String,
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			HousingTypeReference: 
			{
				GlobalID: String,
				Title: String
			},
			ConstructionBlockReference: 
			{
				GlobalID: String,
				Title: String
			},
			Code: String,
			Description: String,
			Address: 
			{
				AddressLine1: String,
				AddressLine2: String,
				HouseNumber: String,
				HouseNumberSuffix: String,
				PostalCode: String,
				City: String,
				Country: 
				{
					GlobalID: String,
					Title: String
				}
			},
			RentalHouse: False,
			GuaranteeCertificateNumber: String,
			Inactive: False,
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String,
			ViewingDate: 0001-01-01,
			ViewingDateSpecified: False,
			DeliveryDate: 0001-01-01,
			DeliveryDateSpecified: False
		}
	],
	Documents: 
	[
		{
			GlobalID: String,
			RootDocumentID: String,
			Code: String,
			Subject: String,
			VersionNumber: String,
			NewestVersion: False,
			RelationReference: 
			{
				GlobalID: String,
				Title: String
			},
			DocumentTypeReference: 
			{
				GlobalID: String,
				Title: String
			},
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			ConstructionBlockReference: 
			{
				GlobalID: String,
				Title: String
			},
			ConstructionNumberReference: 
			{
				GlobalID: String,
				Title: String
			},
			HousingTypeReference: 
			{
				GlobalID: String,
				Title: String
			},
			Floor: 0,
			FloorSpecified: False,
			DeletedDate: 0001-01-01,
			DeletedDateSpecified: False,
			File: 
			{
				Type: String,
				Name: String,
				Size: 0,
				Content: String,
				ModifiedDate: 0001-01-01
			},
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String
		}
	],
	PurchaseContracts: 
	[
		{
			GlobalID: String,
			Code: String,
			Description: String,
			ProjectReference: 
			{
				GlobalID: String,
				Title: String
			},
			ProductCode: String,
			Relation: 
			{
				GlobalID: String,
				NameLine1: String,
				NameLine2: String,
				Address: 
				{
					AddressLine1: String,
					AddressLine2: String,
					HouseNumber: String,
					HouseNumberSuffix: String,
					PostalCode: String,
					City: String,
					Country: 
					{
						GlobalID: String,
						Title: String
					}
				},
				MailingAddress: 
				{
					POBox: String,
					PostalCode: String,
					City: String,
					Country: 
					{
						GlobalID: String,
						Title: String
					}
				},
				Telephone: String,
				Mobile: String,
				Email: String,
				IBAN: String,
				BankAccountNumber: String,
				Website: String,
				Inactive: False,
				CustomFields: 
				[
					{
						Name: String,
						Value: String
					}
				],
				CreationDate: 0001-01-01,
				CreatedBy: String,
				ModifiedDate: 0001-01-01,
				ModifiedBy: String
			},
			Inactive: False,
			CustomFields: 
			[
				{
					Name: String,
					Value: String
				}
			],
			CreationDate: 0001-01-01,
			CreatedBy: String,
			ModifiedDate: 0001-01-01,
			ModifiedBy: String
		}
	]
}